package kbl.language;

import java.util.ArrayList;

public class Production {
	 /* (1) E → E * B
	    (2) E → E + B
	    (3) E → B
	    (4) B → 0
	    (5) B → 1 a(bb)+a */ 
	RegularExpression leftHandSide;
	ArrayList<RegularExpression> rightHandSide;
	

	public static void main(String[] args) {
		//Production p = new Production();
		RegularExpressionParser cre = new RegularExpressionParser(); 
//		ArrayList<RegularExpression> p = new ArrayList<RegularExpression>();
//		p.add(new RegularExpression('('));
//		p.add(new RegularExpression(CommonType.LeftHandSide, "E"));
//		p.add(new RegularExpression("*"));
//		p.add(new RegularExpression("B"));
//		p.add(new RegularExpression(')'));
//		p.add(new RegularExpression('|'));
//		p.add(new RegularExpression("A"));
//		ArrayList<RegularExpression> rep = cre.doReversePolishNotation(p.toString());
//		rep.add(0, new RegularExpression(CommonType.LeftHandSide, "E"));
//		System.out.println(rep.toString());
//		NFA nfa = NFA.getInstance();
//		NFAState s=nfa.RE2NFA(rep);
//		
//		p.clear();
//		p.add(new RegularExpression("("));
//		p.add(new RegularExpression("E"));
//		p.add(new RegularExpression("*"));
//		p.add(new RegularExpression("B"));
//		p.add(new RegularExpression(")"));
//		p.add(new RegularExpression('|'));
//		p.add(new RegularExpression("A"));
//		ArrayList<RegularExpression> rep1 = cre.doReversePolishNotation(p.toString());
//		rep1.add(0, new RegularExpression(CommonType.LeftHandSide, "E"));
//		System.out.println(rep1.toString());
//		NFAState s1 = nfa.RE2NFA(rep1);

		
/*		p.add(new RegularExpression("a"));
		p.add(new RegularExpression('('));
		p.add(new RegularExpression("b"));
		p.add(new RegularExpression("b"));
		p.add(new RegularExpression(')'));
		p.add(new RegularExpression('+'));
		p.add(new RegularExpression("a"));
		System.out.println(cre.rpn(p).toString());*/
		
		
	}
}
